gusucode.com > 现代通信系统——使用MATLAB(+全部程序) > 现代通信系统——使用MATLAB(+全部程序)/现代通信系统——使用MATLAB(+全部程序)/Matlab 程序/Chapter10/programs/prgs/depfun/apkconst.m
function yy=apkconst(nir, air, pir, plot_type) %APKCONST Plot a combined circular ASK-PSK signal constellation. % APKCONST(NUMSIG, AMP, PHASE) plots a circle signal constellation whose kth % circle has NUMSIG(k) evenly spaced constellation points at radius AMP(k). % One point on the kth circle has phase PHASE(k). NUMSIG, AMP, and PHASE are % vectors of the same length. % % APKCONST(NUMSIG, AMP) is the same as the syntax above, except that one % point on each circle has zero phase. % % APKCONST(NUMSIG) is the same as the syntax above, except that the kth % circle has radius k. % % Y = APKCONST(...) outputs a complex vector whose real part is the in-phase % component and whose imaginary part is the quadrature component. This % syntax does not produce a plot. % Copyright 1996-2001 The MathWorks, Inc. % $Revision: 1.11 $ error(nargchk(1,4,nargin)); m = length(nir); if nargin <= 1 air = [1:m]; end; if nargin <= 2 pir = zeros(1,m); end; if nargin <= 3 plot_type = 'r*'; end; if isempty(plot_type) plot_type = 'r*'; end if nargout < 1 plot_flag = 1; else plot_flag = 0; end; j=sqrt(-1); z = exp(j*[0:100]*pi/50); x=real(z); y=imag(z); if plot_flag cax = newplot; hold_state = ishold; plot(x*max(air), y*max(air)); if ~hold_state hold on end; zz=axis*1.05; plot(zz(1:2),[0,0],'k'); plot([0,0],zz(3:4),'k'); end; z=[]; for i = 1:m for k = 1:nir(i) z = [z air(i)*exp(j*((k-1)*2*pi/nir(i)+pir(i)))]; end; if plot_flag if (i ~= m) plot(x*air(i), y*air(i)); end; end; end; % plot the ASK/PSK signal. if plot_flag if findstr(lower(plot_type), 'n') tmp = plot(z, 'r.'); set(tmp, 'MarkerSize', 12) for i = 1 : length(z) text(real(z(i)), imag(z(i)), num2str(i-1)); end else tmp = plot(z, plot_type); if findstr(lower(plot_type), '.') set(tmp, 'MarkerSize', 12) end; end if ~hold_state axis('equal'); axis('off'); text(zz(1)+(zz(2)-zz(1))/4, zz(3)-(zz(4)-zz(3))/15, 'ASK/PSK Constellation'); hold off; end; else yy = z; end;